package com.zjp.service.impl;

import com.zjp.mapper.UserMapper;
import com.zjp.pojo.User;
import com.zjp.pojo.UserExample;
import com.zjp.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;

import javax.annotation.Resource;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Resource
    private UserMapper userMapper;

    /**
     * 登录实现
     *
     * @param name
     * @param password
     * @return
     */
    public User doLogin(String name, String password) {
        // 先对用户输入的密码进行MD5哈希
        String md5Password = DigestUtils.md5DigestAsHex(password.getBytes());
        // 使用MyBatis的UserExample来查询数据库
        UserExample userExample = new UserExample();
        UserExample.Criteria criteria = userExample.createCriteria();
        criteria.andNameEqualTo(name);
       // 我们比较的是哈希值，而不是原始密码
        criteria.andPasswordEqualTo(md5Password);
        List<User> userList = userMapper.selectByExample(userExample);
        // 判断userList是否为空，不为空则继续执行
  if (userList != null && !userList.isEmpty()) {
            // 如果找到匹配的用户，返回第一个用户
            return userList.get(0);
        }
        // 如果没有找到匹配的用户，返回null
        return null;
    }

    /**
     * 注册实现
     *
     * @param user
     * @return
     */
    public int doRegiseter(User user) {
        //查询数据库中用户是否已经存在
        UserExample userExample = new UserExample();
        UserExample.Criteria criteria = userExample.createCriteria();
        criteria.andNameEqualTo(user.getName());
        int i = (int) userMapper.countByExample(userExample);
        if (i > 0) {
            return 0;
        }
        //如果注册用户不存在，可以注册
        return userMapper.insertSelective(user);
    }

    /**
     * 修改个人资料实现
     *
     * @param user
     * @return
     */
    public int updateUserMassage(User user) {
        // 先对用户输入的密码进行MD5哈希
        String md5NewPassword = DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
        user.setPassword(md5NewPassword);
        return userMapper.updateByPrimaryKey(user);

    }

    /**
     *  //根据用户id修改用户健康码状态信息
     * @param userid
     */
    public int updateHealthStatusByUserId(long userid) {
        return userMapper.updateHealthStatusByUserId(userid);
    }




}
